package com.itheim.manager.dao;

import com.itheim.manager.domin.Manager;
import com.itheim.manager.domin.Subway;


import java.io.*;


import java.util.ArrayList;
import java.util.Properties;

public class ManagerDao {

    //创建集合用来存储Manager账户信息
    ArrayList<Manager> list = new ArrayList<>();
    //创建用来存储文件中的地铁站信息
    private static ArrayList<Subway> listSS = new ArrayList<Subway>();

    //静态代码块用来初始化数据（地铁站信息）
    static {
        //加载文件中的地铁站信息
        load01();
    }

    //加载功能01：加载本地文件中存储的地铁站信息
    private static void load01() {
        try {
            //创建一个缓冲字符输入流，用来读取本地文件中地铁站的内容
            BufferedReader br = new BufferedReader(new FileReader("BeijingSubwayManager\\扩展作业\\素材\\subways.txt"));
            //创建字符串临时变量
            String line;
            //循环读取流中数据，直到数据为空
            while ((line = br.readLine()) != null) {
                //对地铁信息其中的逗号，进行分割得到地铁站的各个属性，统一封装为地铁站对象
                if (!line.contains(",")) {
                    break;
                }
                //4.关闭字符缓冲输入流
                br.close();
                //对地铁信息其中的逗号，进行分割得到地铁站的各个属性
                String[] linesplit = line.split(",");
                //把每条信息的各个属性都统一封装为地铁站对象
                listSS.add(new Subway(linesplit[0], linesplit[1], linesplit[2]));
            }
        } catch (IOException e) {
            System.out.println("加载文件中的地铁信息发生异常");
        }

    }


    public Properties findAllUsers() {
        //将文件中的数据读取到内存中，存入Properties集合并返回
        Properties propp = new Properties();
        try {
            propp.load(new FileReader("BeijingSubwayManager\\扩展作业\\素材\\managers.txt"));
        } catch (Exception e) {
            return null;
        }
        return propp;
    }

    //库管的查看地铁站信息
    public ArrayList<Subway> findAllSubwayStation() {
        //返回集合
        return listSS;
    }

    //库管的添加功能
    public void addSubwayStation(Subway ss) {
       /* for (int i = 0; i < listSS.size(); i++) {
            Subway subway = listSS.get(i);
            listSS.add(subway);
        }
        return true;*/
       listSS.add(ss);
       reSave01();

     /*   // 通过标记位思想来找到当前ss对象在数组中应存入的位置
        //假设数组已经存满了,让index记录-1
        int index = -1;
        // 遍历数组
        for (int i = 0; i < listSS.size(); i++) {
            //拿到每一个索引位置的元素
           Subway subway = listSS.get(i);
            //判断当前元素是否为null
            if (subway == null) {
                //修改标记,让index记录当前元素的索引位置
                index = i;
                break;
            }
        }
        //根据index的值来判断本次添加是否能成功
        if (index == -1) {
            //   -1表示都存满了,没有办法再添加了,返回false
            return false;
        } else {
            //不是-1表示还有位置可以存,将要添加的学生对象存入对应的索引位置即可
            listSS.add(ss);
            return true;
        }*/



    }

    //功能:将集合中的对象以指定个存储到文件中
    private void reSave01()  {
        try{
            //1.创建一个缓存字符输出流,用来存储集合数据到文件中
            BufferedWriter bw = new BufferedWriter(new FileWriter("BeijingSubwayManager\\扩展作业\\素材\\subways.txt"));
            //2.将集合中每一个对象存储到文件中
            for (int i = 0; i < listSS.size(); i++) {
                Subway sub = listSS.get(i);
                //存储一个对象的字符串格式
                bw.write(sub.toString());
                //每存储一个对象,换一行
                bw.newLine();
            }
        }catch (Exception e){
            System.out.println("将集合中的数据保存到文件中,出现异常现象");
        }

    }


    //读取管理员账户存档
    //  BufferedReader br = new BufferedReader(new FileReader("BeijingSubwayManager\\扩展作业\\素材\\managers.txt"));


}